﻿using EAMF.Content.Projectiles;
using Iced.Intel;
using Microsoft.Xna.Framework;
using System;
using Terraria;
using Terraria.DataStructures;
using Terraria.ID;
using Terraria.ModLoader;

namespace EAMF.Content.Items.Weapon
{
    public class Sword : ModItem
    {
        public override void SetStaticDefaults()
        {
            // 设置旅途模式下需要复制所需研究的数目，默认为0，设置为0则禁止研究
            Item.ResearchUnlockCount = 0;
        }
        public override void SetDefaults()
        {
            Item.width = 30; //设置物品大小
            Item.height = 30;
            //一般使用这个函数
            Item.DamageType = DamageClass.Melee; //设置伤害类型
            Item.damage = 100;//设置伤害大小
            Item.crit = 30; //设置暴击率，玩家自带4点，所以最终是+=4
            Item.knockBack = 5; //设置击退力度
            Item.maxStack = 1; //最大堆叠数，默认为
            Item.value = 5000; //设置价格，购买价格
            Item.useStyle = ItemUseStyleID.Swing; //设置使用方式
            Item.useAnimation = 30;//使用一次动画的时间;
            Item.useTime = 30; //使用一次的时间;
            Item.UseSound = SoundID.Item1;//使用时的音效
            Item.autoReuse = true;//是否可以自动攻击
            Item.rare = ItemRarityID.Blue; //设置物品的稀有度
            //其他属性
            Item.shoot = ModContent.ProjectileType<EXTraceProj>(); //设置射击类型
            Item.shootSpeed = 10f; //设置射击速度
        }

        public override bool Shoot(Player player, EntitySource_ItemUse_WithAmmo source, Vector2 position, Vector2 velocity, int type, int damage, float knockback)
        {
            int mode = 0;
            switch (mode)
            {
                default:
                    break;
                case 0:
                    {
                        position = Main.MouseWorld;
                        Projectile.NewProjectile(source, position, velocity * 0, type, damage, knockback, player.whoAmI);
                    }
                    break;
                case 1:
                    {

                    }
                    break;
            }
            return false;
        }
        public override void AddRecipes()
        {
            /*
            //添加配方
            //这个括号里有个默认为1的参数，可以填任何大于0的数字，表示合成会生成多少个物品
            CreateRecipe()
               //这样会生成50个物品
               //CreateRecipe(50)
               //添加物品,itemID表示物品ID,stack表示数量
               //如果你写俩种相同的材料的话，它们会分别显示而不是合并成一个（我家门前有两颗树，一颗是枣树，另一颗还是枣树）
               .AddIngredient(ItemID.DirtBlock, 1)
               // 使用ModContent.ItemType<xxx>()来获取你的物品的type，不过在这里，你可以使用Type
               // 你的物品类必须继承ModItem
               //.AddIngredient(/*ModContent.ItemType<SkirtSword>(), 1)
               
               //这是物品所需的合成台，这里用的是工作台的ID
               //你可以使用ModContent.TileType<你的物品的类>()来获取你的物品的type，同样需要继承ModTile
               //你可以添加多个合成台
            
               .AddTile(TileID.WorkBenches)
               .Register();
            */


            //由于CreteRecipe(),AddIngredient(),AddTile()三个方法都返回了Recipe对象，且都使用了链式调用(return this)
            //所以上述可以写成下面这样
            Recipe recipe = CreateRecipe();
            recipe.AddIngredient(ItemID.DirtBlock, 1);
            recipe.AddTile(TileID.WorkBenches);
            recipe.AddCondition(Condition.InBeach);//添加条件，只有在海滩附近才可以合成
            recipe.AddCondition(Condition.NearLava);//添加条件，只有在熔岩附近才可以合成
            recipe.AddRecipeGroup(RecipeGroupID.Wood, 10);//添加物品组，这里是10个木头
            recipe.AddRecipeGroup("GoldOrPlatinum", 5);//添加自定义物品组
            recipe.Register();//注册这个配方
        }
    }
}
